package main

import (
	"bufio"
	"fmt"
	"io"
	"os"
)

/*
https://studygolang.com/static/pkgdoc/pkg/bufio.htm#Reader.ReadString
*/

func main() {

	filePath := "C:\\Users\\mlamp\\temp\\go\\file\\read\\demo.txt"
	file, errOpen := os.Open(filePath) // 打开文件
	if errOpen != nil {
		fmt.Println("打开文件异常！", errOpen)
	}

	defer file.Close() // 关闭文件

	// 创建带缓存的 Reader
	reader := bufio.NewReader(file)
	for {
		line, errReader := reader.ReadString('\n') // 表示读到了 \n 就是一行的结束
		if errReader == io.EOF {
			fmt.Println(line) // 因为最后一行没有换行符，所以这里读完的就是最后一行
			fmt.Println("~~~读完了~~~", errReader)
			break
		}
		fmt.Printf(line)
		// fmt.Printf("%v : len(line) = %v ", line, len([]rune(line)))
	}

	fmt.Println("*********** 第二种方法 Scanner 读取")
	file_02, errOpen_02 := os.Open(filePath) // 打开文件
	if errOpen_02 != nil {
		fmt.Println("打开文件异常！", errOpen_02)
	}

	defer file_02.Close() // 关闭文件
	scanner := bufio.NewScanner(file_02)
	for scanner.Scan() {
		lineText := scanner.Text()
		fmt.Println(lineText)
	}

}
